This section describes approaches that could be employed, but does not necessarily describe approaches that previously have been conceived or employed. Hence, unless explicitly specified otherwise, any approaches described in this section are not prior art to the claims in this application, and any approaches described in this section are not admitted to be prior art by inclusion in this section.
Processor-based applications or programs to date have been written in accordance with constraints imposed by hardware-specific and/or software-specific constraints of the underlying computing system intended to execute the applications or programs. For example, assembly language instruction sets are designed for a specific processor circuit for manipulation of digital bits (i.e., having a value of either 0 or 1) that can be interpreted by the specific processor circuit either as an executable instruction, an address value for a register or memory location accessible by the specific processor circuit, or data: applications written using the assembly instruction sets must strictly follow the associated software and/or hardware based requirements of the assembly language instruction sets (e.g., syntax, etc.). Operating systems (e.g., Microsoft Windows XP®, Unix, Linux, etc.) provide a level of abstraction that enables application developers to ignore at least some of the hardware or software-based constraints of the specific processor circuit; however, such operating systems in return impose their own hardware and/or software based constraints that must be followed by an application executed using such operating systems to perform a prescribed function.
Consequently, substantial compatibility problems continue to exist when an attempt is made to employ an existing application (developed for a first computing system) on a second computing system that is not perfectly compatible with the first computing systems. Moreover, more complex computing systems are constantly being developed (e.g., newer processor circuits offering multithreading; parallel computing or blade computing; network-based distributed computing; cloud computing, etc.). Hence, application developers continue to confront the difficult requirement of understanding the features and requirements of the more complex computing system in order to modify existing applications for compatibility or develop a new application that operates without failure in the more complex computing system.